home *** CD-ROM | disk | FTP | other *** search
/ Your Choice 1 / your choice.zip / your choice / PRGMMING / VISIONIX / VBIOSU.PAS < prev    next >
Pascal/Delphi Source File  |  1993-12-23  |  8KB  |  240 lines

  1. {
  2.  ══════════════════════════════════════════════════════════════════════════════
  3.  
  4.  Visionix BIOS Unit (VBIOS)
  5.    Version 0.6m
  6.  Copyright 1991,92,93 Visionix
  7.  ALL RIGHTS RESERVED
  8.  
  9.  ──────────────────────────────────────────────────────────────────────────────
  10.  
  11.  Revision history in reverse chronological order:
  12.  
  13.  Initials  Date      Comment
  14.  ────────  ────────  ──────────────────────────────────────────────────────────
  15.  
  16.  jrt       11/30/93  Yanked out keyboard, int13, cgapixelmap code.
  17.                      moved cgapixelmap stuff to VFont.
  18.                      used keyboard stuff to start vkeybu.
  19.  
  20.  jrt       10/27/93  Renamed from VBIOS to VBIOSu for beta 0.30
  21.  
  22.  mep       05/17/93  Added IsBlinkEnabled
  23.  
  24.  mep       02/13/93  Added various tables
  25.  
  26.  mep       02/11/93  Cleaned up code for beta release
  27.  
  28.  jrt       02/08/93  Sync with beta 0.12 release
  29.  
  30.  jrt       12/07/92  Sync with beta 0.11 release
  31.  
  32.  jrt       11/25/92  Created
  33.  
  34.  ──────────────────────────────────────────────────────────────────────────────
  35. }
  36.  
  37. Unit VBIOSu;
  38.  
  39. Interface
  40.  
  41. {──────────────────────────────────────────────────────────────────────────────}
  42.  
  43. (*-
  44.  
  45. [TEXT]
  46.  
  47. [SECTION: Section 3: The Operating System Services Libraries]
  48. [CHAPTER: Chapter 1: The BIOS Data Area Unit]
  49.  
  50.  
  51. <Overview>
  52.  
  53. This unit maps a single pointer-variable onto the BIOS Data Area (BDA).
  54. located at segment $40.  This pointer can then be used to access
  55. the BDA in a clean way.  The unit works in real mode, protected mode,
  56. and Windows.
  57.  
  58. For more information on the BIOS DATA area, consult any book which
  59. expains the IBM PC/AT BIOS in detail.
  60.  
  61. <<Example:>>
  62.  
  63.   WriteLn(' Total base memory: ',BiosMemMap^.BaseMem );
  64.  
  65.   { to show the total amount of base memory. }
  66.  
  67.   WriteLn(' Fixed Disk Last Operation: ',BiosMemMap^.FixedDiskLastOp );
  68.  
  69.  
  70. <Definition of abbreviated terms>
  71.  
  72.    Addr  = Address
  73.    Alpha = Alphanumeric
  74.    Alt   = Alternate
  75.    Attr  = Attribute
  76.    Brdr  = Border
  77.    Buf   = Buffer
  78.    Cmd   = Command
  79.    Col   = Column
  80.    Com   = Communications (serial)
  81.    Ctrl  = Control
  82.    Curr  = Current
  83.    DCC   = Display Combination Code
  84.    Disp  = Display
  85.    Dyn   = Dynamic
  86.    Equip = Equipment on system
  87.    Err   = Error
  88.    Ext   = Extended
  89.    Gen   = Generator
  90.    Grfx  = Graphic
  91.    Idx   = Index
  92.    Intr  = Interrupt
  93.    Kbd   = Keyboard
  94.    Lpt   = Printer (parallel)
  95.    Mem   = Memory
  96.    Ofs   = Offset
  97.    Op    = Operation
  98.    Pal   = Palette
  99.    Param = Parameters
  100.    Prof  = Profile
  101.    Ptr   = Pointer
  102.    Reg   = Register
  103.    Rsvp  = Reserved for future use (unknown)
  104.    Sec   = Secondary
  105.    Sect  = Sector
  106.    Sel   = Select
  107.    Stat  = Status
  108.    Strt  = Start
  109.    Trk   = Track
  110.    Usr   = User
  111.    VSPT  = Video Save Pointer Table
  112.    Vid   = Video
  113.  
  114. -*)
  115.  
  116. Type
  117.  
  118.   TDiskAddrField = RECORD
  119.  
  120.     Trk          : BYTE;
  121.     Head         : BYTE;
  122.     Sect         : BYTE;
  123.     BytesPerSect : BYTE;
  124.  
  125.   END;
  126.  
  127.   {---}
  128.  
  129.   TBiosMemMap = RECORD
  130.  
  131.     ComAddr              : Array[1..4] of WORD;   {00}
  132.     LptAddr              : Array[1..4] of WORD;   {08}
  133.     Equip                : WORD;                  {10}
  134.     Rsvp1                : BYTE;                  {12}
  135.     BaseMem              : WORD;                  {13}
  136.     Rsvp2                : BYTE;                  {15}
  137.     Rsvp3                : BYTE;                  {16}
  138.     KbdFlag1             : BYTE;                  {17}
  139.     KbdFlag2             : BYTE;                  {18}
  140.     KbdAltKeypad         : BYTE;                  {19}
  141.     KbdBufHead           : WORD;                  {1A}
  142.     KbdBufTail           : WORD;                  {1C}
  143.     KbdBuf               : Array[1..16] of WORD;  {1E}
  144.     DiskRecalStat        : BYTE;                  {3E}
  145.     DiskMotorStat        : BYTE;                  {3F}
  146.     DiskOffTimeout       : BYTE;                  {40}
  147.     DiskLastOpStat       : BYTE;                  {41}
  148.     DiskCmdStat          : Array[1..7] of BYTE;   {42}
  149.     VidCurrMode          : BYTE;                  {49}
  150.     VidCurrCol           : WORD;                  {4A}
  151.     VidPageSize          : WORD;                  {4C}
  152.     VidCurrPageAddr      : WORD;                  {4E}
  153.     VidCursorPos         : Array[1..8] of WORD;   {50}
  154.     VidCursorType        : WORD;                  {60}
  155.     VidCurrPage          : BYTE;                  {62}
  156.     VidCRTCtrlAddr       : WORD;                  {63}
  157.     VidCurrModeSelReg    : BYTE;                  {65}
  158.     VidCurrCGAPalReg     : BYTE;                  {66}
  159.     PostRealModeAddr     : POINTER;               {67}
  160.     PostLastUnknownIntr  : BYTE;                  {6B}
  161.     TimerTicksToday      : LONGINT;               {6C}
  162.     TimerOverflow        : BOOLEAN;               {70}
  163.     CtrlBreak            : BYTE;                  {71}
  164.     PostReset            : WORD;                  {72}
  165.     FixedDiskLastOp      : BYTE;                  {74}
  166.     FixedDiskNumDrive    : BYTE;                  {75}
  167.     FixedDiskCtrl        : BYTE;                  {76}
  168.     FixedDiskIOPortOfs   : BYTE;                  {77}
  169.     LptTimeout           : Array[1..4] of BYTE;   {78}
  170.     ComTimeout           : Array[1..4] of BYTE;   {7C}
  171.     KbdBufStartOfs       : WORD;                  {80}
  172.     KbdBufEndOfs         : WORD;                  {82}
  173.     VidVGACurrRow        : BYTE;                  {84}
  174.     VidVGACharScanSize   : WORD;                  {85}
  175.     VidVGACtrl           : BYTE;                  {87}
  176.     VidVGASwitch         : BYTE;                  {88}
  177.     VidVGAModeSetCtrl    : BYTE;                  {89}
  178.     VidVGADCCBase        : BYTE;                  {8A}
  179.     DiskMediaCtrl        : BYTE;                  {8B}
  180.     FixedDiskCtrlStat    : BYTE;                  {8C}
  181.     FixedDiskCtrlErrStat : BYTE;                  {8D}
  182.     FixedDiskIntrCtrl    : BYTE;                  {8E}
  183.     DiskCtrlStat         : BYTE;                  {8F}
  184.     Disk0MediaStat       : BYTE;                  {90}
  185.     Disk1MediaStat       : BYTE;                  {91}
  186.     Disk0MediaStrtOpStat : BYTE;                  {92}
  187.     Disk1MediaStrtOpStat : BYTE;                  {93}
  188.     Disk0MediaCurrTrk    : BYTE;                  {94}
  189.     Disk1MediaCurrTrk    : BYTE;                  {95}
  190.     KbdStat1             : BYTE;                  {96}
  191.     KbdStat2             : BYTE;                  {97}
  192.     TimerUsrWaitAddr     : POINTER;               {98}
  193.     TimerUsrWaitTimeout  : LONGINT;               {9C}
  194.     TimerWaitActiveStat  : BYTE;                  {A0}
  195.     NetRsvp1             : Array[1..7] of BYTE;   {A1}
  196.     VidVGAVSPTAddr       : POINTER;               {A8}
  197.     VidDynSaveAreaAddr   : POINTER;               {AC}
  198.     VidAlphaCharGenAddr  : POINTER;               {B0}
  199.     VidGrfxCharGenAddr   : POINTER;               {B4}
  200.     VidSecSaveAddr       : POINTER;               {B8}
  201.     Rsvp6                : Array[1..4] of BYTE;   {BC}
  202.     Rsvp7                : Array[1..$E] of BYTE;  {C0}
  203.     TimerDaysSinceBoot   : WORD;                  {CE}
  204.     Rsvp8                : Array[1..$20] of BYTE; {D0}
  205.     UsrRsvp1             : Array[1..$10] of BYTE; {F0}
  206.     LptScrnStat          : BYTE;                  {100}
  207.  
  208.   END;
  209.  
  210.   PBiosMemMap = ^TBiosMemMap;
  211.  
  212.   {----}
  213.  
  214. Var
  215.  
  216.   BIOSMemMap : PBIOSMemMap;
  217.  
  218. {──────────────────────────────────────────────────────────────────────────────}
  219.  
  220.  
  221.  
  222. Implementation
  223.  
  224. Uses
  225.  
  226.   VTypesu,
  227.   DOS;
  228.  
  229.  
  230. {──────────────────────────────────────────────────────────────────────────────}
  231. {──────────────────────────────────────────────────────────────────────────────}
  232. {──────────────────────────────────────────────────────────────────────────────}
  233.  
  234. BEGIN
  235.  
  236.   BiosMemMap := Ptr( Seg0040, 0 );
  237.  
  238. END.
  239.  
  240.